home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
dev
/
gui
/
triton11.lha
/
Triton
/
Demos
/
Source
/
demo.c
next >
Wrap
C/C++ Source or Header
|
1994-07-14
|
40KB
|
1,208 lines
/*
* Triton - The object oriented GUI creation system for the Amiga
* Written by Stefan Zeiger in 1993-1994
*
* (c) 1993-1994 by Stefan Zeiger
* You are hereby allowed to use this source or parts
* of it for creating programs for AmigaOS which use the
* Triton GUI creation system. All other rights reserved.
*
* demo.c - Triton demo program
*
*/
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////// Include our stuff // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libraries/triton.h>
#ifdef __GNUC__
#ifndef __INLINE__
#include <clib/triton_protos.h>
#include <clib/dos_protos.h>
#include <clib/intuition_protos.h>
#else
#include <inline/triton.h>
#include <inline/dos.h>
#include <inline/intuition.h>
#endif /* __INLINE__ */
#else
#include <proto/triton.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#endif /* __GNUC__ */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* /////////////////////////////////////////////////////////////////////////////////// Global variables // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
struct TR_Project *main_project;
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* //////////////////////////////////////////////////////////////////////////////////// Window 'groups' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(groups_trwintags)
{
WindowTitle("Groups"), WindowPosition(TRWP_CENTERDISPLAY), WindowUnderscore("~"), WindowID(1),
HorizGroupA, Space, VertGroupA,
Space,
NamedFrameBox("TRGR_PROPSHARE (default)"), ObjectBackfillWin, VertGroupA, Space, HorizGroupC,
Space,
Button("Short",1),
Space,
Button("And much, much longer...",2),
Space,
EndGroup, Space, EndGroup,
Space,
NamedFrameBox("TRGR_EQUALSHARE"), ObjectBackfillWin, VertGroupA, Space, HorizGroupEC,
Space,
Button("Short",3),
Space,
Button("And much, much longer...",4),
Space,
EndGroup, Space, EndGroup,
Space,
NamedFrameBox("TRGR_PROPSPACES"), ObjectBackfillWin, VertGroupA, Space, HorizGroupSC,
Space,
Button("Short",5),
Space,
Button("And much, much longer...",6),
Space,
EndGroup, Space, EndGroup,
Space,
NamedFrameBox("TRGR_ARRAY"), ObjectBackfillWin, VertGroupA, Space, LineArray,
BeginLine,
Space,
Button("Short",7),
Space,
Button("And much, much longer...",8),
Space,
EndLine,
Space,
BeginLine,
Space,
Button("Not so short",9),
Space,
Button("And a bit longer...",10),
Space,
EndLine,
Space,
BeginLineI,
NamedSeparator("An independant line"),
EndLine,
Space,
BeginLine,
Space,
Button("foo bar",12),
Space,
Button("42",13),
Space,
EndLine,
EndArray, Space, EndGroup,
Space,
EndGroup, Space, EndGroup,
EndProject
};
VOID do_groups(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *groups_project;
if(groups_project=TR_OpenProject(Application,groups_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==groups_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(groups_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ///////////////////////////////////////////////////////////////////////////////////// Window 'menus' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
struct TagItem menus_trwintags[]=
{
WindowID(2), WindowTitle("Menus"),
TRMN_Title, (ULONG) "A menu",
TRMN_Item, (ULONG) "A simple item", TRAT_ID, 1,
TRMN_Item, (ULONG) "Another item", TRAT_ID, 2,
TRMN_Item, (ULONG) "And now... a barlabel", TRAT_ID, 3,
TRMN_Item, (ULONG) TRMN_BARLABEL,
TRMN_Item, (ULONG) "1_An item with a shortcut", TRAT_ID, 4,
TRMN_Item, (ULONG) "2_Another one", TRAT_ID, 5,
TRMN_Item, (ULONG) "3_And number 3", TRAT_ID, 6,
TRMN_Item, (ULONG) TRMN_BARLABEL,
TRMN_Item, (ULONG) "_F1_And under OS3.0: Extended command keys", TRAT_ID, 6,
TRMN_Item, (ULONG) "_F2_Another one", TRAT_ID, 7,
TRMN_Item, (ULONG) TRMN_BARLABEL,
TRMN_Item, (ULONG) "How do you like submenus?",
TRMN_Sub, (ULONG) "G_Great!", TRAT_ID, 8,
TRMN_Sub, (ULONG) "F_Fine", TRAT_ID, 9,
TRMN_Sub, (ULONG) "D_Don't know", TRAT_ID, 10,
TRMN_Sub, (ULONG) "N_Not so fine", TRAT_ID, 11,
TRMN_Sub, (ULONG) "P_Puke!", TRAT_ID, 12,
TRMN_Title, (ULONG) "Another menu",
TRMN_Item, (ULONG) "This item is ghosted", TRMN_Flags, TRMF_DISABLED, TRAT_ID, 100,
TRMN_Item, (ULONG) TRMN_BARLABEL,
TRMN_Item, (ULONG) "Item 1 is checked", TRMN_Flags, TRMF_CHECKED, TRAT_ID, 13,
TRMN_Item, (ULONG) "Item 2 can be checked, too", TRMN_Flags, TRMF_CHECKIT, TRAT_ID, 14,
TRMN_Title, (ULONG) "Ghosted menu",
TRMN_Flags, (ULONG) TRMF_DISABLED,
TRMN_Item, (ULONG) "Item 1", TRAT_ID, 101,
TRMN_Item, (ULONG) "Item 2", TRAT_ID, 102,
TAG_END
};
VOID do_menus(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *menus_project;
if(menus_project=TR_OpenProject(Application,menus_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==menus_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
case TRMS_NEWVALUE:
printf("The new value of object %d is %d.\n",trmsg->trm_ID,trmsg->trm_Data);
break;
case TRMS_ACTION:
printf("Object %d has triggered an action.\n",trmsg->trm_ID);
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(menus_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* /////////////////////////////////////////////////////////////////////////////////// Window 'gadgets' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
STRPTR cycle_entries[]=
{
"Entry 0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
NULL
};
STRPTR mx_entries[]=
{
"Choice 0",
"Choice 1",
"Choice 2",
NULL
};
struct TagItem gadgets_trwintags[]=
{
WindowID(3),
WindowTitle("Gadgets"),
WindowPosition(TRWP_CENTERDISPLAY),
TRGR_Vert, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Line, (ULONG) TROF_HORIZ,
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "GadTools", TRAT_Flags, (ULONG) TRTX_TITLE,
TROB_Space, (ULONG) NULL,
TROB_Line, (ULONG) TROF_HORIZ,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_CheckBox, (ULONG) NULL,
TRAT_ID, (ULONG) 1,
TRAT_Value, (ULONG) TRUE,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "_Checkbox",
TRAT_ID, (ULONG) 1,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Slider, (ULONG) NULL,
TRAT_ID, (ULONG) 4,
TRSL_Min, (ULONG) 1,
TRSL_Max, (ULONG) 3,
TRAT_Value, (ULONG) 1,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "_Slider: ",
TRAT_ID, (ULONG) 4,
TROB_Text, (ULONG) NULL,
TRAT_Value, (ULONG) 1,
TRAT_ID, (ULONG) 4,
TRAT_MinWidth, (ULONG) 3,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Scroller, (ULONG) NULL,
TRAT_ID, (ULONG) 5,
TRAT_Value, (ULONG) 2,
TRSC_Total, (ULONG) 7,
TRSC_Visible, (ULONG) 3,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "Sc_roller: ",
TRAT_ID, (ULONG) 5,
TROB_Text, (ULONG) NULL,
TRAT_Value, (ULONG) 2,
TRAT_ID, (ULONG) 5,
TRAT_MinWidth, (ULONG) 3,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Palette, (ULONG) NULL,
TRAT_ID, (ULONG) 3,
TRAT_Value, (ULONG) 1,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "_Palette: ",
TRAT_ID, (ULONG) 3,
TROB_Text, (ULONG) NULL,
TRAT_Value, (ULONG) 1,
TRAT_ID, (ULONG) 3,
TRAT_MinWidth, (ULONG) 3,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Cycle, (ULONG) cycle_entries,
TRAT_ID, (ULONG) 6,
TRAT_Value, (ULONG) 4,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "C_ycle: ",
TRAT_ID, (ULONG) 6,
TROB_Text, (ULONG) NULL,
TRAT_Value, (ULONG) 4,
TRAT_ID, (ULONG) 6,
TRAT_MinWidth, (ULONG) 3,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Cycle, (ULONG) mx_entries,
TRAT_ID, (ULONG) 13,
TRAT_Value, (ULONG) 1,
TRAT_Flags, (ULONG) TRCY_MX,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "_MX: ",
TRAT_ID, (ULONG) 13,
TROB_Text, (ULONG) NULL,
TRAT_Value, (ULONG) 1,
TRAT_ID, (ULONG) 13,
TRAT_MinWidth, (ULONG) 3,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_ALIGN|TRGR_CENTER,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_String, (ULONG) "foo bar",
TRAT_ID, (ULONG) 7,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Text, (ULONG) NULL,
TRAT_Text, (ULONG) "S_tring",
TRAT_ID, (ULONG) 7,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Line, (ULONG) TROF_HORIZ,
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "BOOPSI", TRAT_Flags, (ULONG) TRTX_TITLE,
TROB_Space, (ULONG) NULL,
TROB_Line, (ULONG) TROF_HORIZ,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Button, (ULONG) NULL, TRAT_ID, 2, TRAT_Text, (ULONG) "_Button",
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "_File:", TRAT_ID, 10,
TROB_Space, (ULONG) NULL,
TROB_Button, (ULONG) TRBT_GETFILE, TRAT_ID, 10, TRAT_Text, (ULONG) "",
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "_Drawer:", TRAT_ID, 11,
TROB_Space, (ULONG) NULL,
TROB_Button, (ULONG) TRBT_GETDRAWER, TRAT_ID, 11, TRAT_Text, (ULONG) "",
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "_Entry:", TRAT_ID, 12,
TROB_Space, (ULONG) NULL,
TROB_Button, (ULONG) TRBT_GETENTRY, TRAT_ID, 12, TRAT_Text, (ULONG) "",
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TAG_END
};
VOID do_gadgets(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *gadgets_project;
if(gadgets_project=TR_OpenProject(Application,gadgets_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==gadgets_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(gadgets_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ///////////////////////////////////////////////////////////////////////////////// Window 'disabling' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
struct TagItem disabling_trwintags[]=
{
WindowID(4), WindowTitle("Disabling"), WindowPosition(TRWP_CENTERDISPLAY),
TRGR_Vert, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_CheckBox, (ULONG) NULL, TRAT_ID, 1, TRAT_Value, TRUE,
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "_Disable", TRAT_ID, 1,
TRGR_Horiz, (ULONG) TRGR_PROPSPACES,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_EQUALSHARE|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Line, (ULONG) TROF_HORIZ,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_CheckBox, (ULONG) NULL, TRAT_Value, TRUE, TRAT_ID, 2, TRAT_Disabled, TRUE,
TROB_Space, (ULONG) NULL,
TROB_Text, (ULONG) NULL, TRAT_Text, (ULONG) "_Checkbox", TRAT_ID, 2,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_Horiz, (ULONG) TRGR_PROPSHARE|TRGR_ALIGN|TRGR_CENTER,
TROB_Space, (ULONG) NULL,
TROB_Button, (ULONG) NULL, TRAT_Text, (ULONG) "_Button", TRAT_ID, 3, TRAT_Disabled, TRUE,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TROB_Space, (ULONG) NULL,
TRGR_End, (ULONG) NULL,
TAG_END
};
VOID do_disabling(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *disabling_project;
if(disabling_project=TR_OpenProject(Application,disabling_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==disabling_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
case TRMS_NEWVALUE:
if(trmsg->trm_ID==1)
{
TR_SetAttribute(disabling_project,2,TRAT_Disabled,trmsg->trm_Data);
TR_SetAttribute(disabling_project,3,TRAT_Disabled,trmsg->trm_Data);
}
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(disabling_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////////// Window 'text' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(text_trwintags)
{
WindowID(5), WindowTitle("Text"), WindowPosition(TRWP_CENTERDISPLAY),
VertGroupA,
Space, CenteredText("Normal text"),
Space, CenteredTextH("Highlighted text"),
Space, CenteredText3("3-dimensional text"),
Space, CenteredTextB("Bold text"),
Space, CenteredText("A _shortcut"),
Space, CenteredInteger(42),
Space, EndGroup, EndProject
};
VOID do_text(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *text_project;
if(text_project=TR_OpenProject(Application,text_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==text_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(text_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* /////////////////////////////////////////////////////////////////////////////// Window 'connections' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(connections_trwintags)
{
WindowID(6), WindowTitle("Connections"), WindowPosition(TRWP_CENTERDISPLAY),
VertGroupA,
Space,
NamedSeparatorI("_Checkmarks",1),
Space,
HorizGroupSAC,
Space, CheckBox(1),
Space, CheckBox(1),
Space, CheckBox(1),
Space, EndGroup,
Space,
HorizGroupSAC,
Space, CheckBox(1),
Space, CheckBox(1),
Space, CheckBox(1),
Space, EndGroup,
Space,
HorizGroupSAC,
Space, CheckBox(1),
Space, CheckBox(1),
Space, CheckBox(1),
Space, EndGroup,
Space,
NamedSeparatorI("_Slider and Progress indicator",2),
Space,
HorizGroupAC,
Space,
SliderGadget(0,10,8,2),
Space,
Integer3(8),TRAT_ID,2,TRAT_MinWidth,3,
Space,
EndGroup,
Space,
HorizGroupAC,
Space,
TextN("0%"),
Space,
Progress(10,8,2),
Space,
TextN("100%"),
Space,
EndGroup,
Space,
EndGroup, EndProject
};
VOID do_connections(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *connections_project;
if(connections_project=TR_OpenProject(Application,connections_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==connections_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(connections_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////// Window 'backfill' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(backfill_trwintags)
{
WindowID(7), WindowTitle("Backfill"), WindowPosition(TRWP_CENTERDISPLAY),
VertGroupA,
Space, CenteredText("Each window and"),
SpaceS, CenteredText("FrameBox can have"),
SpaceS, CenteredText("one of the following"),
SpaceS, CenteredText("backfill patterns"),
Space, HorizGroupA,
Space, GroupBox, ObjectBackfillS, SpaceB,
Space, GroupBox, ObjectBackfillSA, SpaceB,
Space, GroupBox, ObjectBackfillSF, SpaceB,
Space, EndGroup,
Space, HorizGroupA,
Space, GroupBox, ObjectBackfillSB, SpaceB,
Space, GroupBox, ObjectBackfillA, SpaceB,
Space, GroupBox, ObjectBackfillAF, SpaceB,
Space, EndGroup,
Space, HorizGroupA,
Space, GroupBox, ObjectBackfillAB, SpaceB,
Space, GroupBox, ObjectBackfillF, SpaceB,
Space, GroupBox, ObjectBackfillFB, SpaceB,
Space, EndGroup,
Space, EndGroup, EndProject
};
VOID do_backfill(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *backfill_project;
if(backfill_project=TR_OpenProject(Application,backfill_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==backfill_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(backfill_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ///////////////////////////////////////////////////////////////////////////////// Window 'appwindow' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(appwindow_trwintags)
{
WindowID(8), WindowTitle("AppWindow"), WindowPosition(TRWP_CENTERDISPLAY),
VertGroupA,
Space, CenteredText("This window is an application window."),
SpaceS, CenteredText("Drop icons into the window or into"),
SpaceS, CenteredText("the icon drop boxes below and see"),
SpaceS, CenteredText("what will happen..."),
Space, HorizGroupA,
Space, DropBox(1),
Space, DropBox(2),
Space, EndGroup,
Space, EndGroup, EndProject
};
VOID do_appwindow(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *appwindow_project;
UBYTE reqstr[200],dirname[100];
if(appwindow_project=TR_OpenProject(Application,appwindow_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==appwindow_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
case TRMS_ICONDROPPED:
dirname[0]=0;
NameFromLock(((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Lock,dirname,100);
AddPart(dirname,((struct AppMessage *)(trmsg->trm_Data))->am_ArgList->wa_Name,100);
switch(trmsg->trm_ID)
{
case 1:
sprintf(reqstr,"Icon(s) dropped into the left box.\tName of first dropped icon:\n%%3%s",dirname);
break;
case 2:
sprintf(reqstr,"Icon(s) dropped into the right box.\tName of first dropped icon:\n%%3%s",dirname);
break;
default:
sprintf(reqstr,"Icon(s) dropped into the window.\tName of first dropped icon:\n%%3%s",dirname);
}
TR_EasyRequestTags(Application,reqstr,"_Ok",
TREZ_LockProject,appwindow_project,TREZ_Title,"AppWindow report",TREZ_Activate,TRUE,TAG_END);
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(appwindow_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ///////////////////////////////////////////////////////////////////////////////////// Window 'lists' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
struct TR_Dimensions lists_dim;
extern struct List LVList1;
extern struct List LVList2;
extern struct List LVList3;
struct Node LVNodes1[] =
{
{ &LVNodes1[1], (struct Node *)&LVList3.lh_Head, 0, 0, "This is a" },
{ &LVNodes1[2], &LVNodes1[0], 0, 0, "READ" },
{ &LVNodes1[3], &LVNodes1[1], 0, 0, "ONLY" },
{ &LVNodes1[4], &LVNodes1[2], 0, 0, "Listview" },
{ &LVNodes1[5], &LVNodes1[3], 0, 0, "gadget" },
{ &LVNodes1[6], &LVNodes1[4], 0, 0, "using the" },
{ &LVNodes1[7], &LVNodes1[5], 0, 0, "fixed-width" },
{ &LVNodes1[ 8], &LVNodes1[ 6], 0, 0, "font." },
{ &LVNodes1[ 9], &LVNodes1[ 7], 0, 0, "" },
{ &LVNodes1[10], &LVNodes1[ 8], 0, 0, "This window" },
{ &LVNodes1[11], &LVNodes1[ 9], 0, 0, "uses a" },
{ &LVNodes1[12], &LVNodes1[10], 0, 0, "dimensions" },
{ &LVNodes1[13], &LVNodes1[11], 0, 0, "structure," },
{ &LVNodes1[14], &LVNodes1[12], 0, 0, "so it will" },
{ &LVNodes1[15], &LVNodes1[13], 0, 0, "remember" },
{ &LVNodes1[16], &LVNodes1[14], 0, 0, "its" },
{ &LVNodes1[17], &LVNodes1[15], 0, 0, "position" },
{ &LVNodes1[18], &LVNodes1[16], 0, 0, "when you" },
{ (struct Node *)&LVList3.lh_Tail, &LVNodes1[17], 0, 0, "reopen it." }
};
struct Node LVNodes2[] =
{
{ &LVNodes2[1], (struct Node *)&LVList3.lh_Head, 0, 0, "This is a" },
{ &LVNodes2[2], &LVNodes2[0], 0, 0, "SELECT" },
{ &LVNodes2[3], &LVNodes2[1], 0, 0, "Listview" },
{ &LVNodes2[4], &LVNodes2[2], 0, 0, "gadget." },
{ &LVNodes2[5], &LVNodes2[3], 0, 0, "Use the" },
{ &LVNodes2[6], &LVNodes2[4], 0, 0, "numeric" },
{ &LVNodes2[7], &LVNodes2[5], 0, 0, "key pad to" },
{ &LVNodes2[8], &LVNodes2[6], 0, 0, "move" },
{ (struct Node *)&LVList3.lh_Tail, &LVNodes2[7], 0, 0, "around." }
};
struct Node LVNodes3[] =
{
{ &LVNodes3[1], (struct Node *)&LVList3.lh_Head, 0, 0, "This is a" },
{ &LVNodes3[2], &LVNodes3[0], 0, 0, "SHOW" },
{ &LVNodes3[3], &LVNodes3[1], 0, 0, "SELECTED" },
{ &LVNodes3[4], &LVNodes3[2], 0, 0, "Listview" },
{ &LVNodes3[5], &LVNodes3[3], 0, 0, "gadget." },
{ &LVNodes3[6], &LVNodes3[4], 0, 0, "This list" },
{ &LVNodes3[7], &LVNodes3[5], 0, 0, "is a bit" },
{ &LVNodes3[8], &LVNodes3[6], 0, 0, "longer, so" },
{ &LVNodes3[9], &LVNodes3[7], 0, 0, "that you" },
{ &LVNodes3[10],&LVNodes3[8], 0, 0, "can try the" },
{ &LVNodes3[11],&LVNodes3[9], 0, 0, "other" },
{ &LVNodes3[12],&LVNodes3[10], 0, 0, "keyboard" },
{ (struct Node *)&LVList3.lh_Tail, &LVNodes3[11], 0, 0, "shortcuts." }
};
struct List LVList1=
{
(struct Node *)&LVNodes1[0],
(struct Node *)NULL,
(struct Node *)&LVNodes1[18],
0,0
};
struct List LVList2=
{
(struct Node *)&LVNodes2[0],
(struct Node *)NULL,
(struct Node *)&LVNodes2[8],
0,0
};
struct List LVList3=
{
(struct Node *)&LVNodes3[0],
(struct Node *)NULL,
(struct Node *)&LVNodes3[12],
0,0
};
struct TagItem lists_trwintags[]=
{
WindowID(9), WindowTitle("Lists"), WindowPosition(TRWP_CENTERDISPLAY), WindowDimensions(&lists_dim),
HorizGroupA, Space, VertGroupA,
Space,
NamedSeparatorIN("_Read only",1),
Space,
FWListROCN(&LVList1,1,0),
Space,
NamedSeparatorIN("_Select",2),
Space,
ListSelC(&LVList2,2,0),
Space,
NamedSeparatorIN("S_how selected",3),
Space,
ListSSN(&LVList3,3,0,1),
Space,
EndGroup, Space, EndGroup,
EndProject
};
VOID do_lists(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
struct TR_Project *lists_project;
if(lists_project=TR_OpenProject(Application,lists_trwintags))
{
TR_LockProject(main_project);
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==lists_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_UnlockProject(main_project);
TR_CloseProject(lists_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ///////////////////////////////////////////////////////////////////////////////////// Window 'about' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* Note: This could be done even simpler with TR_EasyRequest(). */
/* ~~~~~ It is done with TR_AutoRequest() to show you how this works. */
/* See window 'AppWindow' for a TR_EasyRequest() example. */
ProjectDefinition(about_trwintags)
{
BeginRequester("About...",TRWP_CENTERDISPLAY),
VertGroupA, Space, CenteredText3("Triton Demo"),
SpaceS, CenteredText("© 1993-1994 by Stefan Zeiger"),
Space, HorizSeparator,
Space, CenteredText("This program is using the"),
SpaceS, CenteredText("Triton GUI creation system"),
SpaceS, CenteredText("which is © by Stefan Zeiger"),
Space, EndGroup,
BeginRequesterGads,
CenteredButtonRE("_Ok",1),
EndRequester
};
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////////// Window 'main' // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
ProjectDefinition(main_trwintags)
{
WindowID(10), WindowTitle("Triton Demo"), WindowPosition(TRWP_CENTERDISPLAY), WindowFlags(TRWF_HELP),
BeginMenu("Project"),
MenuItem("?_About...",101),
ItemBarlabel,
MenuItem("H_Help",102),
ItemBarlabel,
MenuItem("Q_Quit",103),
VertGroupA,
Space, CenteredText3("T · r · i · t · o · n"),
Space, CenteredText3("The object oriented GUI creation system"),
Space, CenteredText("Demo program"),
Space, CenteredText("Written and © 1993-1994 by Stefan Zeiger"),
Space, HorizSeparator,
Space, HorizGroupEA,
Space, Button("_Gadgets",1),
Space, Button("G_roups",2),
Space, Button("_Text",3),
Space, EndGroup,
Space, HorizGroupEA,
Space, Button("_Connections",4),
Space, Button("_Backfill",5),
Space, Button("_Disabling",6),
Space, EndGroup,
Space, HorizGroupEA,
Space, Button("_AppWindow",7),
Space, Button("_Menus",8),
Space, Button("_Lists",9),
Space, EndGroup,
Space, EndGroup, EndProject
};
VOID do_main(VOID)
{
BOOL close_me=FALSE;
struct TR_Message *trmsg;
UBYTE reqstr[100];
if(main_project=TR_OpenProject(Application,main_trwintags))
{
while(!close_me)
{
TR_Wait(Application,NULL);
while(trmsg=TR_GetMsg(Application))
{
if(trmsg->trm_Project==main_project) switch(trmsg->trm_Class)
{
case TRMS_CLOSEWINDOW:
close_me=TRUE;
break;
case TRMS_HELP:
sprintf(reqstr,"You requested help for object %ld.",trmsg->trm_ID);
TR_EasyRequestTags(Application,reqstr,"_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
break;
case TRMS_ERROR:
puts(TR_GetErrorString(trmsg->trm_Data));
break;
case TRMS_ACTION:
switch(trmsg->trm_ID)
{
case 1:
do_gadgets();
break;
case 2:
do_groups();
break;
case 3:
do_text();
break;
case 4:
do_connections();
break;
case 5:
do_backfill();
break;
case 6:
do_disabling();
break;
case 7:
do_appwindow();
break;
case 8:
do_menus();
break;
case 9:
do_lists();
break;
case 101:
TR_AutoRequest(Application,main_project,about_trwintags);
break;
case 102:
TR_EasyRequestTags(Application,"To get help, move the mouse pointer over\nany gadget or menu item and press <Help>.","_Ok",TREZ_LockProject,main_project,TREZ_Title,"Triton help",TAG_END);
break;
case 103:
close_me=TRUE;
}
break;
}
TR_ReplyMsg(trmsg);
}
}
TR_CloseProject(main_project);
}
else DisplayBeep(NULL);
}
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////////// Main function // */
/* /////////////////////////////////////////////////////////////////////////////////////////////////////// */
int main(void)
{
if(TR_OpenTriton(TRITON11VERSION,TRCA_Name,"TritonDemo",TRCA_LongName,"Triton demo",TRCA_Version,"1.1",TAG_END))
{
do_main();
TR_CloseTriton();
return 0;
} else puts("Can't open triton.library v2+.");
return 20;
}